home *** CD-ROM | disk | FTP | other *** search
- #define EXTERN extern
- #include "texd.h"
-
- void starteqno ( )
- {starteqno_regmem
- savestack [ saveptr + 0 ] .cint = curchr ;
- incr ( saveptr ) ;
- {
- pushmath ( 15 ) ;
- eqworddefine ( 6207 , -1 ) ;
- if ( eqtb [ 4315 ] .hh .v.RH != 0 )
- begintokenlist ( eqtb [ 4315 ] .hh .v.RH , 8 ) ;
- }
- }
- void zscanmath ( p )
- halfword p ;
- {/* 20 21 10 */ scanmath_regmem
- integer c ;
- lab20: do {
- getxtoken () ;
- } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ;
- lab21: switch ( curcmd )
- {case 11 :
- case 12 :
- case 68 :
- {
- c = eqtb [ 5907 + curchr ] .hh .v.RH ;
- if ( c == 32768L )
- {
- {
- curcs = curchr + 1 ;
- curcmd = eqtb [ curcs ] .hh.b0 ;
- curchr = eqtb [ curcs ] .hh .v.RH ;
- xtoken () ;
- backinput () ;
- }
- goto lab20 ;
- }
- }
- break ;
- case 16 :
- {
- scancharnum () ;
- curchr = curval ;
- curcmd = 68 ;
- goto lab21 ;
- }
- break ;
- case 17 :
- {
- scanfifteenbitint () ;
- c = curval ;
- }
- break ;
- case 69 :
- c = curchr ;
- break ;
- case 15 :
- {
- scantwentysevenbitint () ;
- c = curval / 4096 ;
- }
- break ;
- default:
- {
- backinput () ;
- scanleftbrace () ;
- savestack [ saveptr + 0 ] .cint = p ;
- incr ( saveptr ) ;
- pushmath ( 9 ) ;
- return ;
- }
- break ;
- }
- mem [ p ] .hh .v.RH = 1 ;
- mem [ p ] .hh.b1 = c % 256 ;
- if ( ( c >= 28672 ) && ( ( eqtb [ 6207 ] .cint >= 0 ) && ( eqtb [ 6207 ]
- .cint < 16 ) ) )
- mem [ p ] .hh.b0 = eqtb [ 6207 ] .cint ;
- else mem [ p ] .hh.b0 = ( c / 256 ) % 16 ;
- }
- void zsetmathchar ( c )
- integer c ;
- {setmathchar_regmem
- halfword p ;
- if ( c >= 32768L )
- {
- curcs = curchr + 1 ;
- curcmd = eqtb [ curcs ] .hh.b0 ;
- curchr = eqtb [ curcs ] .hh .v.RH ;
- xtoken () ;
- backinput () ;
- }
- else {
-
- p = newnoad () ;
- mem [ p + 1 ] .hh .v.RH = 1 ;
- mem [ p + 1 ] .hh.b1 = c % 256 ;
- mem [ p + 1 ] .hh.b0 = ( c / 256 ) % 16 ;
- if ( c >= 28672 )
- {
- if ( ( ( eqtb [ 6207 ] .cint >= 0 ) && ( eqtb [ 6207 ] .cint < 16 ) ) )
- mem [ p + 1 ] .hh.b0 = eqtb [ 6207 ] .cint ;
- mem [ p ] .hh.b0 = 16 ;
- }
- else mem [ p ] .hh.b0 = 16 + ( c / 4096 ) ;
- mem [ curlist .tailfield ] .hh .v.RH = p ;
- curlist .tailfield = p ;
- }
- }
- void mathlimitswitch ( )
- {/* 10 */ mathlimitswitch_regmem
- if ( curlist .headfield != curlist .tailfield )
- if ( mem [ curlist .tailfield ] .hh.b0 == 17 )
- {
- mem [ curlist .tailfield ] .hh.b1 = curchr ;
- return ;
- }
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1123 ) ;
- }
- {
- helpptr = 1 ;
- helpline [ 0 ] = 1124 ;
- }
- error () ;
- }
- void zscandelimiter ( p , r )
- halfword p ;
- boolean r ;
- {scandelimiter_regmem
- if ( r )
- scantwentysevenbitint () ;
- else {
-
- do {
- getxtoken () ;
- } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ;
- switch ( curcmd )
- {case 11 :
- case 12 :
- curval = eqtb [ 6474 + curchr ] .cint ;
- break ;
- case 15 :
- scantwentysevenbitint () ;
- break ;
- default:
- curval = -1 ;
- break ;
- }
- }
- if ( curval < 0 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1125 ) ;
- }
- {
- helpptr = 6 ;
- helpline [ 5 ] = 1126 ;
- helpline [ 4 ] = 1127 ;
- helpline [ 3 ] = 1128 ;
- helpline [ 2 ] = 1129 ;
- helpline [ 1 ] = 1130 ;
- helpline [ 0 ] = 1131 ;
- }
- backerror () ;
- curval = 0 ;
- }
- mem [ p ] .qqqq .b0 = ( curval / 1048576L ) % 16 ;
- mem [ p ] .qqqq .b1 = ( curval / 4096 ) % 256 ;
- mem [ p ] .qqqq .b2 = ( curval / 256 ) % 16 ;
- mem [ p ] .qqqq .b3 = curval % 256 ;
- }
- void mathradical ( )
- {mathradical_regmem
- {
- mem [ curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ curlist .tailfield ] .hh.b0 = 24 ;
- mem [ curlist .tailfield ] .hh.b1 = 0 ;
- mem [ curlist .tailfield + 1 ] .hh = emptyfield ;
- mem [ curlist .tailfield + 3 ] .hh = emptyfield ;
- mem [ curlist .tailfield + 2 ] .hh = emptyfield ;
- scandelimiter ( curlist .tailfield + 4 , true ) ;
- scanmath ( curlist .tailfield + 1 ) ;
- }
- void mathac ( )
- {mathac_regmem
- if ( curcmd == 45 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1132 ) ;
- }
- printesc ( 519 ) ;
- print ( 1133 ) ;
- {
- helpptr = 2 ;
- helpline [ 1 ] = 1134 ;
- helpline [ 0 ] = 1135 ;
- }
- error () ;
- }
- {
- mem [ curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ curlist .tailfield ] .hh.b0 = 28 ;
- mem [ curlist .tailfield ] .hh.b1 = 0 ;
- mem [ curlist .tailfield + 1 ] .hh = emptyfield ;
- mem [ curlist .tailfield + 3 ] .hh = emptyfield ;
- mem [ curlist .tailfield + 2 ] .hh = emptyfield ;
- mem [ curlist .tailfield + 4 ] .hh .v.RH = 1 ;
- scanfifteenbitint () ;
- mem [ curlist .tailfield + 4 ] .hh.b1 = curval % 256 ;
- if ( ( curval >= 28672 ) && ( ( eqtb [ 6207 ] .cint >= 0 ) && ( eqtb [ 6207
- ] .cint < 16 ) ) )
- mem [ curlist .tailfield + 4 ] .hh.b0 = eqtb [ 6207 ] .cint ;
- else mem [ curlist .tailfield + 4 ] .hh.b0 = ( curval / 256 ) % 16 ;
- scanmath ( curlist .tailfield + 1 ) ;
- }
- void appendchoices ( )
- {appendchoices_regmem
- {
- mem [ curlist .tailfield ] .hh .v.RH = newchoice () ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- incr ( saveptr ) ;
- savestack [ saveptr - 1 ] .cint = 0 ;
- pushmath ( 13 ) ;
- scanleftbrace () ;
- }
- halfword zfinmlist ( p )
- halfword p ;
- {register halfword Result; finmlist_regmem
- halfword q ;
- if ( curlist .auxfield .cint != 0 )
- {
- mem [ curlist .auxfield .cint + 3 ] .hh .v.RH = 3 ;
- mem [ curlist .auxfield .cint + 3 ] .hh .v.LH = mem [ curlist .headfield ]
- .hh .v.RH ;
- if ( p == 0 )
- q = curlist .auxfield .cint ;
- else {
-
- q = mem [ curlist .auxfield .cint + 2 ] .hh .v.LH ;
- if ( mem [ q ] .hh.b0 != 30 )
- confusion ( 870 ) ;
- mem [ curlist .auxfield .cint + 2 ] .hh .v.LH = mem [ q ] .hh .v.RH ;
- mem [ q ] .hh .v.RH = curlist .auxfield .cint ;
- mem [ curlist .auxfield .cint ] .hh .v.RH = p ;
- }
- }
- else {
-
- mem [ curlist .tailfield ] .hh .v.RH = p ;
- q = mem [ curlist .headfield ] .hh .v.RH ;
- }
- popnest () ;
- Result = q ;
- return(Result) ;
- }
- void buildchoices ( )
- {/* 10 */ buildchoices_regmem
- halfword p ;
- unsave () ;
- p = finmlist ( 0 ) ;
- switch ( savestack [ saveptr - 1 ] .cint )
- {case 0 :
- mem [ curlist .tailfield + 1 ] .hh .v.LH = p ;
- break ;
- case 1 :
- mem [ curlist .tailfield + 1 ] .hh .v.RH = p ;
- break ;
- case 2 :
- mem [ curlist .tailfield + 2 ] .hh .v.LH = p ;
- break ;
- case 3 :
- {
- mem [ curlist .tailfield + 2 ] .hh .v.RH = p ;
- decr ( saveptr ) ;
- return ;
- }
- break ;
- }
- incr ( savestack [ saveptr - 1 ] .cint ) ;
- pushmath ( 13 ) ;
- scanleftbrace () ;
- }
- void subsup ( )
- {subsup_regmem
- smallnumber t ;
- halfword p ;
- t = 0 ;
- p = 0 ;
- if ( curlist .tailfield != curlist .headfield )
- if ( ( mem [ curlist .tailfield ] .hh.b0 >= 16 ) && ( mem [ curlist
- .tailfield ] .hh.b0 < 30 ) )
- {
- p = curlist .tailfield + 2 + curcmd - 7 ;
- t = mem [ p ] .hh .v.RH ;
- }
- if ( ( p == 0 ) || ( t != 0 ) )
- {
- {
- mem [ curlist .tailfield ] .hh .v.RH = newnoad () ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- p = curlist .tailfield + 2 + curcmd - 7 ;
- if ( t != 0 )
- {
- if ( curcmd == 7 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1136 ) ;
- }
- {
- helpptr = 1 ;
- helpline [ 0 ] = 1137 ;
- }
- }
- else {
-
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1138 ) ;
- }
- {
- helpptr = 1 ;
- helpline [ 0 ] = 1139 ;
- }
- }
- error () ;
- }
- }
- scanmath ( p ) ;
- }
- void mathfraction ( )
- {mathfraction_regmem
- smallnumber c ;
- c = curchr ;
- if ( curlist .auxfield .cint != 0 )
- {
- if ( c >= 3 )
- {
- scandelimiter ( memtop - 12 , false ) ;
- scandelimiter ( memtop - 12 , false ) ;
- }
- if ( c % 3 == 0 )
- scandimen ( false , false , false ) ;
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1146 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 1147 ;
- helpline [ 1 ] = 1148 ;
- helpline [ 0 ] = 1149 ;
- }
- error () ;
- }
- else {
-
- curlist .auxfield .cint = getnode ( 6 ) ;
- mem [ curlist .auxfield .cint ] .hh.b0 = 25 ;
- mem [ curlist .auxfield .cint ] .hh.b1 = 0 ;
- mem [ curlist .auxfield .cint + 2 ] .hh .v.RH = 3 ;
- mem [ curlist .auxfield .cint + 2 ] .hh .v.LH = mem [ curlist .headfield ]
- .hh .v.RH ;
- mem [ curlist .auxfield .cint + 3 ] .hh = emptyfield ;
- mem [ curlist .auxfield .cint + 4 ] .qqqq = nulldelimiter ;
- mem [ curlist .auxfield .cint + 5 ] .qqqq = nulldelimiter ;
- mem [ curlist .headfield ] .hh .v.RH = 0 ;
- curlist .tailfield = curlist .headfield ;
- if ( c >= 3 )
- {
- scandelimiter ( curlist .auxfield .cint + 4 , false ) ;
- scandelimiter ( curlist .auxfield .cint + 5 , false ) ;
- }
- switch ( c % 3 )
- {case 0 :
- {
- scandimen ( false , false , false ) ;
- mem [ curlist .auxfield .cint + 1 ] .cint = curval ;
- }
- break ;
- case 1 :
- mem [ curlist .auxfield .cint + 1 ] .cint = 1073741824L ;
- break ;
- case 2 :
- mem [ curlist .auxfield .cint + 1 ] .cint = 0 ;
- break ;
- }
- }
- }
- void mathleftright ( )
- {mathleftright_regmem
- smallnumber t ;
- halfword p ;
- t = curchr ;
- if ( ( t == 31 ) && ( curgroup != 16 ) )
- {
- if ( curgroup == 15 )
- {
- scandelimiter ( memtop - 12 , false ) ;
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 772 ) ;
- }
- printesc ( 870 ) ;
- {
- helpptr = 1 ;
- helpline [ 0 ] = 1150 ;
- }
- error () ;
- }
- else offsave () ;
- }
- else {
-
- p = newnoad () ;
- mem [ p ] .hh.b0 = t ;
- scandelimiter ( p + 1 , false ) ;
- if ( t == 30 )
- {
- pushmath ( 16 ) ;
- mem [ curlist .headfield ] .hh .v.RH = p ;
- curlist .tailfield = p ;
- }
- else {
-
- p = finmlist ( p ) ;
- unsave () ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newnoad () ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ curlist .tailfield ] .hh.b0 = 23 ;
- mem [ curlist .tailfield + 1 ] .hh .v.RH = 3 ;
- mem [ curlist .tailfield + 1 ] .hh .v.LH = p ;
- }
- }
- }
- void aftermath ( )
- {aftermath_regmem
- boolean l ;
- boolean danger ;
- integer m ;
- halfword p ;
- halfword a ;
- halfword b ;
- scaled w ;
- scaled z ;
- scaled e ;
- scaled q ;
- scaled d ;
- scaled s ;
- smallnumber g1, g2 ;
- halfword r ;
- halfword t ;
- danger = false ;
- if ( ( fontparams [ eqtb [ 4837 ] .hh .v.RH ] < 22 ) || ( fontparams [ eqtb
- [ 4853 ] .hh .v.RH ] < 22 ) || ( fontparams [ eqtb [ 4869 ] .hh .v.RH ] < 22
- ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1151 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 1152 ;
- helpline [ 1 ] = 1153 ;
- helpline [ 0 ] = 1154 ;
- }
- error () ;
- flushmath () ;
- danger = true ;
- }
- else if ( ( fontparams [ eqtb [ 4838 ] .hh .v.RH ] < 13 ) || ( fontparams [
- eqtb [ 4854 ] .hh .v.RH ] < 13 ) || ( fontparams [ eqtb [ 4870 ] .hh .v.RH ]
- < 13 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1155 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 1156 ;
- helpline [ 1 ] = 1157 ;
- helpline [ 0 ] = 1158 ;
- }
- error () ;
- flushmath () ;
- danger = true ;
- }
- m = curlist .modefield ;
- l = false ;
- p = finmlist ( 0 ) ;
- if ( curlist .modefield == - (integer) m )
- {
- {
- getxtoken () ;
- if ( curcmd != 3 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1159 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 1160 ;
- helpline [ 0 ] = 1161 ;
- }
- backerror () ;
- }
- }
- curmlist = p ;
- curstyle = 2 ;
- mlistpenalties = false ;
- mlisttohlist () ;
- a = hpack ( mem [ memtop - 3 ] .hh .v.RH , 0 , 1 ) ;
- unsave () ;
- decr ( saveptr ) ;
- if ( savestack [ saveptr + 0 ] .cint == 1 )
- l = true ;
- danger = false ;
- if ( ( fontparams [ eqtb [ 4837 ] .hh .v.RH ] < 22 ) || ( fontparams [
- eqtb [ 4853 ] .hh .v.RH ] < 22 ) || ( fontparams [ eqtb [ 4869 ] .hh .v.RH
- ] < 22 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1151 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 1152 ;
- helpline [ 1 ] = 1153 ;
- helpline [ 0 ] = 1154 ;
- }
- error () ;
- flushmath () ;
- danger = true ;
- }
- else if ( ( fontparams [ eqtb [ 4838 ] .hh .v.RH ] < 13 ) || ( fontparams
- [ eqtb [ 4854 ] .hh .v.RH ] < 13 ) || ( fontparams [ eqtb [ 4870 ] .hh
- .v.RH ] < 13 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1155 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 1156 ;
- helpline [ 1 ] = 1157 ;
- helpline [ 0 ] = 1158 ;
- }
- error () ;
- flushmath () ;
- danger = true ;
- }
- m = curlist .modefield ;
- p = finmlist ( 0 ) ;
- }
- else a = 0 ;
- if ( m < 0 )
- {
- {
- mem [ curlist .tailfield ] .hh .v.RH = newmath ( eqtb [ 6731 ] .cint , 0
- ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- curmlist = p ;
- curstyle = 2 ;
- mlistpenalties = ( curlist .modefield > 0 ) ;
- mlisttohlist () ;
- mem [ curlist .tailfield ] .hh .v.RH = mem [ memtop - 3 ] .hh .v.RH ;
- while ( mem [ curlist .tailfield ] .hh .v.RH != 0 ) curlist .tailfield =
- mem [ curlist .tailfield ] .hh .v.RH ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newmath ( eqtb [ 6731 ] .cint , 1
- ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- curlist .auxfield .hh .v.LH = 1000 ;
- unsave () ;
- }
- else {
-
- if ( a == 0 )
- {
- getxtoken () ;
- if ( curcmd != 3 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1159 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 1160 ;
- helpline [ 0 ] = 1161 ;
- }
- backerror () ;
- }
- }
- curmlist = p ;
- curstyle = 0 ;
- mlistpenalties = false ;
- mlisttohlist () ;
- p = mem [ memtop - 3 ] .hh .v.RH ;
- adjusttail = memtop - 5 ;
- b = hpack ( p , 0 , 1 ) ;
- p = mem [ b + 5 ] .hh .v.RH ;
- t = adjusttail ;
- adjusttail = 0 ;
- w = mem [ b + 1 ] .cint ;
- z = eqtb [ 6744 ] .cint ;
- s = eqtb [ 6745 ] .cint ;
- if ( ( a == 0 ) || danger )
- {
- e = 0 ;
- q = 0 ;
- }
- else {
-
- e = mem [ a + 1 ] .cint ;
- q = e + fontinfo [ 6 + parambase [ eqtb [ 4837 ] .hh .v.RH ] ] .cint ;
- }
- if ( w + q > z )
- {
- if ( ( e != 0 ) && ( ( w - totalshrink [ 0 ] + q <= z ) || ( totalshrink
- [ 1 ] != 0 ) || ( totalshrink [ 2 ] != 0 ) || ( totalshrink [ 3 ] != 0 )
- ) )
- {
- freenode ( b , 7 ) ;
- b = hpack ( p , z - q , 0 ) ;
- }
- else {
-
- e = 0 ;
- if ( w > z )
- {
- freenode ( b , 7 ) ;
- b = hpack ( p , z , 0 ) ;
- }
- }
- w = mem [ b + 1 ] .cint ;
- }
- d = half ( z - w ) ;
- if ( ( e > 0 ) && ( d < 2 * e ) )
- {
- d = half ( z - w - e ) ;
- if ( p != 0 )
- if ( ! ( p >= himemmin ) )
- if ( mem [ p ] .hh.b0 == 10 )
- d = 0 ;
- }
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 6174 ] .cint
- ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- if ( ( d + s <= eqtb [ 6743 ] .cint ) || l )
- {
- g1 = 3 ;
- g2 = 4 ;
- }
- else {
-
- g1 = 5 ;
- g2 = 6 ;
- }
- if ( l && ( e == 0 ) )
- {
- mem [ a + 4 ] .cint = s ;
- appendtovlist ( a ) ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- }
- else {
-
- mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( g1 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- if ( e != 0 )
- {
- r = newkern ( z - w - e - d ) ;
- if ( l )
- {
- mem [ a ] .hh .v.RH = r ;
- mem [ r ] .hh .v.RH = b ;
- b = a ;
- d = 0 ;
- }
- else {
-
- mem [ b ] .hh .v.RH = r ;
- mem [ r ] .hh .v.RH = a ;
- }
- b = hpack ( b , 0 , 1 ) ;
- }
- mem [ b + 4 ] .cint = s + d ;
- appendtovlist ( b ) ;
- if ( ( a != 0 ) && ( e == 0 ) && ! l )
- {
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ a + 4 ] .cint = s + z - mem [ a + 1 ] .cint ;
- appendtovlist ( a ) ;
- g2 = 0 ;
- }
- if ( t != memtop - 5 )
- {
- mem [ curlist .tailfield ] .hh .v.RH = mem [ memtop - 5 ] .hh .v.RH ;
- curlist .tailfield = t ;
- }
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 6175 ] .cint
- ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- if ( g2 > 0 )
- {
- mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( g2 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- resumeafterdisplay () ;
- }
- }
- void resumeafterdisplay ( )
- {resumeafterdisplay_regmem
- if ( curgroup != 15 )
- confusion ( 1162 ) ;
- unsave () ;
- curlist .pgfield = curlist .pgfield + 3 ;
- pushnest () ;
- curlist .modefield = 102 ;
- curlist .auxfield .hh .v.LH = 1000 ;
- curlist .auxfield .hh .v.RH = 0 ;
- {
- getxtoken () ;
- if ( curcmd != 10 )
- backinput () ;
- }
- if ( nestptr == 1 )
- buildpage () ;
- }
- void getrtoken ( )
- {/* 20 */ getrtoken_regmem
- lab20: do {
- gettoken () ;
- } while ( ! ( curtok != 2592 ) ) ;
- if ( ( curcs == 0 ) || ( curcs > 3514 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1177 ) ;
- }
- {
- helpptr = 5 ;
- helpline [ 4 ] = 1178 ;
- helpline [ 3 ] = 1179 ;
- helpline [ 2 ] = 1180 ;
- helpline [ 1 ] = 1181 ;
- helpline [ 0 ] = 1182 ;
- }
- if ( curcs == 0 )
- backinput () ;
- curtok = 7609 ;
- inserror () ;
- goto lab20 ;
- }
- }
- void trapzeroglue ( )
- {trapzeroglue_regmem
- if ( ( mem [ curval + 1 ] .cint == 0 ) && ( mem [ curval + 2 ] .cint == 0 )
- && ( mem [ curval + 3 ] .cint == 0 ) )
- {
- incr ( mem [ 0 ] .hh .v.RH ) ;
- deleteglueref ( curval ) ;
- curval = 0 ;
- }
- }
- void zdoregistercommand ( a )
- smallnumber a ;
- {/* 40 10 */ doregistercommand_regmem
- halfword l, q, r, s ;
- schar p ;
- q = curcmd ;
- {
- if ( q != 89 )
- {
- getxtoken () ;
- if ( ( curcmd >= 73 ) && ( curcmd <= 76 ) )
- {
- l = curchr ;
- p = curcmd - 73 ;
- goto lab40 ;
- }
- if ( curcmd != 89 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 681 ) ;
- }
- printcmdchr ( curcmd , curchr ) ;
- print ( 682 ) ;
- printcmdchr ( q , 0 ) ;
- {
- helpptr = 1 ;
- helpline [ 0 ] = 1203 ;
- }
- error () ;
- return ;
- }
- }
- p = curchr ;
- scaneightbitint () ;
- switch ( p )
- {case 0 :
- l = curval + 6218 ;
- break ;
- case 1 :
- l = curval + 6751 ;
- break ;
- case 2 :
- l = curval + 3800 ;
- break ;
- case 3 :
- l = curval + 4056 ;
- break ;
- }
- }
- lab40: ;
- if ( q == 89 )
- scanoptionalequals () ;
- else if ( scankeyword ( 1199 ) )
- ;
- aritherror = false ;
- if ( q < 91 )
- if ( p < 2 )
- {
- if ( p == 0 )
- scanint () ;
- else scandimen ( false , false , false ) ;
- if ( q == 90 )
- curval = curval + eqtb [ l ] .cint ;
- }
- else {
-
- scanglue ( p ) ;
- if ( q == 90 )
- {
- q = newspec ( curval ) ;
- r = eqtb [ l ] .hh .v.RH ;
- deleteglueref ( curval ) ;
- mem [ q + 1 ] .cint = mem [ q + 1 ] .cint + mem [ r + 1 ] .cint ;
- if ( mem [ q + 2 ] .cint == 0 )
- mem [ q ] .hh.b0 = 0 ;
- if ( mem [ q ] .hh.b0 == mem [ r ] .hh.b0 )
- mem [ q + 2 ] .cint = mem [ q + 2 ] .cint + mem [ r + 2 ] .cint ;
- else if ( ( mem [ q ] .hh.b0 < mem [ r ] .hh.b0 ) && ( mem [ r + 2 ]
- .cint != 0 ) )
- {
- mem [ q + 2 ] .cint = mem [ r + 2 ] .cint ;
- mem [ q ] .hh.b0 = mem [ r ] .hh.b0 ;
- }
- if ( mem [ q + 3 ] .cint == 0 )
- mem [ q ] .hh.b1 = 0 ;
- if ( mem [ q ] .hh.b1 == mem [ r ] .hh.b1 )
- mem [ q + 3 ] .cint = mem [ q + 3 ] .cint + mem [ r + 3 ] .cint ;
- else if ( ( mem [ q ] .hh.b1 < mem [ r ] .hh.b1 ) && ( mem [ r + 3 ]
- .cint != 0 ) )
- {
- mem [ q + 3 ] .cint = mem [ r + 3 ] .cint ;
- mem [ q ] .hh.b1 = mem [ r ] .hh.b1 ;
- }
- curval = q ;
- }
- }
- else {
-
- scanint () ;
- if ( p < 2 )
- if ( q == 91 )
- if ( p == 0 )
- curval = multandadd ( eqtb [ l ] .cint , curval , 0 , 2147483647L ) ;
- else curval = multandadd ( eqtb [ l ] .cint , curval , 0 , 1073741823L ) ;
- else curval = xovern ( eqtb [ l ] .cint , curval ) ;
- else {
-
- s = eqtb [ l ] .hh .v.RH ;
- r = newspec ( s ) ;
- if ( q == 91 )
- {
- mem [ r + 1 ] .cint = multandadd ( mem [ s + 1 ] .cint , curval , 0 ,
- 1073741823L ) ;
- mem [ r + 2 ] .cint = multandadd ( mem [ s + 2 ] .cint , curval , 0 ,
- 1073741823L ) ;
- mem [ r + 3 ] .cint = multandadd ( mem [ s + 3 ] .cint , curval , 0 ,
- 1073741823L ) ;
- }
- else {
-
- mem [ r + 1 ] .cint = xovern ( mem [ s + 1 ] .cint , curval ) ;
- mem [ r + 2 ] .cint = xovern ( mem [ s + 2 ] .cint , curval ) ;
- mem [ r + 3 ] .cint = xovern ( mem [ s + 3 ] .cint , curval ) ;
- }
- curval = r ;
- }
- }
- if ( aritherror )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1200 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 1201 ;
- helpline [ 0 ] = 1202 ;
- }
- error () ;
- return ;
- }
- if ( p < 2 )
- if ( ( a >= 4 ) )
- geqworddefine ( l , curval ) ;
- else eqworddefine ( l , curval ) ;
- else {
-
- trapzeroglue () ;
- if ( ( a >= 4 ) )
- geqdefine ( l , 117 , curval ) ;
- else eqdefine ( l , 117 , curval ) ;
- }
- }
- void alteraux ( )
- {alteraux_regmem
- halfword c ;
- if ( curchr != abs ( curlist .modefield ) )
- reportillegalcase () ;
- else {
-
- c = curchr ;
- scanoptionalequals () ;
- if ( c == 1 )
- {
- scandimen ( false , false , false ) ;
- curlist .auxfield .cint = curval ;
- }
- else {
-
- scanint () ;
- if ( ( curval <= 0 ) || ( curval > 32767 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1204 ) ;
- }
- {
- helpptr = 1 ;
- helpline [ 0 ] = 1205 ;
- }
- interror ( curval ) ;
- }
- else curlist .auxfield .hh .v.LH = curval ;
- }
- }
- }
-